import { getDate } from '@/libs/common'
import { post } from '@/libs/request'

/**
 * 创建测评
 * @param typeCode 测评类型Code
 */
const createQuiz = (typeCode: string) =>
  post<{
    /** 会话ID */
    sessionId: string
    /** 测评类型Code */
    typeCode: string
    /** 第一个问题 */
    firstQuestion: T_Question
    /** 题目总数 */
    qustionsCount: number
    /** 塔罗牌列表 */
    tarotCards: T_TarotCard[]
  }>('suan/create', { typeCode })

/**
 * 查询测试问题
 * @param sessionId 会话ID
 * @param questionId 问题ID
 */
const getQuizQuestion = (sessionId: string, questionId: number) =>
  post<T_Question>('suan/question', { sessionId, questionId })

/**
 * 查询测试问题
 * @param sessionId 会话ID
 * @param questionId 问题ID
 * @param answer 回答
 */
const sendQuizAnswer = (sessionId: string, questionId: number, answer: string) =>
  post<{
    /** 下一题ID */
    nextQuestionId: number
    /** 进度 */
    progress: number
    /** 问题总数 */
    qustionsCount: number
  }>('suan/answer', { sessionId, questionId, answer })

/**
 * 查询测试问题（测试用，一键完成）
 * @param sessionId 会话ID
 * @param questionId 问题ID
 * @param answer 回答
 */
const sendQuizAnswerAuto = (sessionId: string, questionId: number, answer: string) =>
  post<{
    /** 下一题ID */
    nextQuestionId: number
    /** 进度 */
    progress: number
    /** 问题总数 */
    qustionsCount: number
  }>('test/auto/mbti/answer', { sessionId, questionId, answer })

/**
 * 查询测试结果
 */
const getQuizResult = (
  options: {
    /** 会话ID */
    sessionId?: string
    /** 测评类型Code */
    typeCode?: string
    date?: string
    type?: number
    friendId?: number
  } = {},
) =>
  post<{
    id: number
    sessionId: string
    progress: number
    qustionsCount: number
    userInfo: T_UserInfo & { mbtiType: string }
    friend: T_Friend
    mbtiResult: T_MBTIResult
    fortuneResult: T_FortuneResult
    luckDayResult: T_LuckDayResult
    anxietyResult: T_AnxietyResult
    physiognomyResult: T_PhysiognomyResult
    loveResult: T_LoveResult
    careerResult: T_CareerResult
    tarotResult: T_TarotResult

    /** 是否需要解锁 */
    isLocked: boolean
    /**
     * 已解锁的报告类型，当该值为3时，isLocked=False
     * 2 已解锁初级报告
     * 3 已解锁高级报告
     */
    unlockedType: 0 | 2 | 3
    /** 解锁项ID */
    unlockItemId: number
    /** 解锁价格 */
    unlockItemPrice: number
    /** 价格类型 1-人民币 2-蒜瓣 */
    unlockItemPriceType: 1 | 2
    /** 解锁价格文案 */
    unlockText: string

    /** 1处理中 2处理完成 */
    testStatus: 1 | 2
  }>('suan/result', {
    date: getDate(),
    // date: '2025-10-24',
    ...options,
  })

export { createQuiz, getQuizQuestion, sendQuizAnswer, sendQuizAnswerAuto, getQuizResult }
